package com.example.demo.common;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@Component
/*实现接口之后就是一个自定义的拦截器了，但是还没有加入到 spring boot 中*/
public class LoginInterceptor implements HandlerInterceptor {
    //调用目标方法之前执行的方法
    //此方法返回的是 boolean 类型的值，如果返回的是true，表示（拦截器）验证成功，继续走后续的流程，执行目标方法
    //如果返回的是 false ，这表示拦截器执行失败，验证未通过，后续的流程和目标方法不要执行了
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //用户登录判断业务
        HttpSession session = request.getSession(false);
        if (session != null && session.getAttribute("session_userinfo") != null) {
            //用户已经登录
            return true;
        }
//        response.sendRedirect("https://www.baidu.com");
        response.setStatus(401); //401代表没有权限
        return false; //返回false 就代表不会去执行目标方法了
    }
}
